トリガーの例 1: 簡単な例
の Robotics_Trigger.project
ここで説明するサンプル プロジェクトは、次のインストール ディレクトリにあります。 CODESYS 下 ..\CODESYS SoftMotion\Examples
。
トリガは、軸グループが指令されたパス上の特定の点にいつ到達するかを正確に知るために使用されます。この情報は、たとえば、正確なタイミングでツールをオンまたはオフにするために使用できます。この例では、単一のトリガーが動作でどのように指令され、周期的に読み取られるかを示します。これに基づいて、 トリガー例2:接着工程 プロジェクトは現実的なサンプル アプリケーションを示しています。
アプリケーションの構造
このアプリケーションは2つのプログラムで構成されています。 Main_PRG
バスタスクで実行され、 Planning_PRG
軸グループ計画タスクで実行されています。また、トレースもあります。
メイン_PRG
:
の Main_PRG
プログラムにはアプリケーションのメイン ステート マシンが含まれています。最初の 2 つの状態は、ドライブと軸グループを初期化し、スイッチをオンにするために使用されます。の中に STATE_COMMAND_MOVEMENT_WITH_TRIGGER
状態では、まずインスタンスを使用してトリガーが準備されます。 SMC_GroupPrepareTrigger
ファンクションブロック。位置は 0.6 の値で相対的に指定されます。その結果、割り当てられた動作の 60% が完了した時点でトリガーが配置されます。準備されたトリガーは、次のコマンド動作に割り当てられます。この例では、位置 (X=20、Y=10) への直線移動がコマンドによって命令されます。 MC_MoveLinearAbsolute
。
prepTrigger.PositionType := SMC_TriggerPositionType.MvtRelative; prepTrigger.Position.MvtPosition := 0.6; prepTrigger(AxisGroup:= AxisGroup, Execute:= TRUE); moveLinear(AxisGroup:= AxisGroup, Execute:= prepTrigger.Prepared);
次の状態では STATE_ENABLE_READ_TRIGGER
、のインスタンス SMC_GroupReadTrigger
コマンドされたトリガーの状態を読み取るために開始されます。トリガーへのリンクは、 TriggerId
によって返されました SMC_GroupPrepareTrigger
。
readTrigger.TriggerId := prepTrigger.TriggerId; readTrigger.Enable := TRUE;
の中に STATE_CHECK_TRIGGER
状態に応じて、トリガーのステータスが最終的に周期的にチェックされます。出来るだけ早く SMC_GroupReadTrigger
レポート Active
ステータスとして、トリガーに達するまでの時間を読み取ることができます。期間は常に現在のサイクルの開始を指します。したがって、継続時間がサイクル時間 (この例では 0.004 秒) より短い場合、現在のサイクルでトリガーに達します。
IF readTrigger.TriggerInfo.status = SMC_TRIGGER_STATUS.Active THEN IF readTrigger.TriggerInfo.triggerTime <= 0.004 THEN triggerFired := TRUE; ... END_IF END_IF
企画_PRG
の中に Planning_PRG
プログラムでは、計画の予測期間は、 SMC_TuneCPKernel
ファンクションブロック。の SMC_GroupReadTrigger
ファンクションブロックは、トリガーが予測期間に達したときに出力できます。この例では、予測期間は 0.1 秒に設定されています。したがって、のステータスは、 SMC_GroupReadTrigger
ファンクションブロックは次のように変わります Active
軸グループがトリガに到達する 0.1 秒前から有効期間を出力します。
tuneCpKernel(AxisGroup:= axisGroup, Execute:= TRUE, fPlanningForecastDuration:= 0.1);
痕跡
トレースを使用して、 SMC_GroupReadTrigger
ファンクションブロック。
最初の図では、(X=0, Y=0) から (X=20, Y=10) まで移動が実行されることがわかります。トリガーはムーブメント上の相対位置 0.6、つまり (X=12、Y=6) にあります。
2 番目の図は、 triggerTime
からの出力 SMC_GroupReadTrigger
。計画の予測期間が 0.1 秒であるため、値は 0.1 秒にジャンプし、その後、位置 (X=12、Y=6) で値 0 に達するまで直線的に減少します。
3 番目の図は、 triggerFired
に設定される変数 STATE_CHECK_TRIGGER
の状態 Main_PRG
軸グループがトリガから 0.004 秒未満の距離に近づくとすぐに実行されます。